package com.berchen.test;

import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;

/**
 * 当多个线程都到了才执行后面的事情
 */
public class CyclicBarrierDemo {

    public static void main(String[] args) {

        // 当多个线程都存在了 才会执行线程后面的事情
        CyclicBarrier cyclicBarrier=new CyclicBarrier(5,()->{
            System.out.println(Thread.currentThread().getName()+"人到齐了，开会了哈");
        });

        for (int i = 0; i < 5; i++) {
            new Thread(()->{
                System.out.println(Thread.currentThread().getName()+"人没到齐，等等");
                try {
                    // 让该线程进行等待  人还没到齐  先等等
                    cyclicBarrier.await();
                    // 人齐了 开始开会了
                    System.out.println(Thread.currentThread().getName()+"开会了");
                } catch (InterruptedException e) {
                    e.printStackTrace();
                } catch (BrokenBarrierException e) {
                    e.printStackTrace();
                }
            }).start();
        }
    }
}
